export default class MessageCenter {
	constructor() {
	    this.msgCache = {}
		this.subscribies = {}
	}
	
	subscribe(msgName, cb, triggerLastMsg = true) {
		// save subscribe
		if (this.subscribies[msgName]) {
			this.subscribies[msgName].push(cb)
		} else {
			this.subscribies[msgName] = [cb]
		}
		// trigger last msg
		if (triggerLastMsg && msgName in this.msgCache) {
			cb(this.msgCache[msgName])
		}
	}
	
	once(msgName, cb, triggerLastMsg = true) {
		// 待实现
	}
	
	emit(msgName, data) {
		const subs = this.subscribies[msgName]
		// emit msg to every subscribe
		if (subs && subs.length) {
			subs.forEach(sub => sub(data))
		}
		// save last msg
		this.msgCache[msgName] = data
	}
}